package com.panfeng.xcloud.boss.provider.assets.service.impl;

import com.alibaba.fastjson.JSON;
import com.panfeng.xcloud.boss.provider.assets.dao.mapper.UserWalletInfoMapperExt;
import com.panfeng.xcloud.boss.provider.assets.dto.UserWalletInfoExtendItemDTO;
import com.panfeng.xcloud.boss.provider.assets.dto.request.QueryUserWalletInfoPageReqDTO;
import com.panfeng.xcloud.boss.provider.assets.dto.request.UpdateUserWalletInfoReqDTO;
import com.panfeng.xcloud.boss.provider.assets.dto.response.QueryUserWalletInfoPageRespDTO;
import com.panfeng.xcloud.boss.provider.assets.dto.response.UpdateUserWalletInfoRespDTO;
import com.panfeng.xcloud.boss.provider.assets.service.IUserWalletInfoService;
import com.panfeng.xcloud.common.core.page.PageResponse;
import com.panfeng.xcloud.common.core.utils.ConvertUtils;
import com.panfeng.xcloud.dao.assets.entity.UserWalletInfo;
import com.panfeng.xcloud.dao.base.MapperSupport;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@Slf4j
public class UserWalletInfoServiceImpl extends MapperSupport<Integer, UserWalletInfo, UserWalletInfoMapperExt> implements IUserWalletInfoService {

    @Autowired
    UserWalletInfoMapperExt userWalletInfoMapperExt;

    /**
     * 查询钱包信息相关
     *
     * @param queryUserWalletInfoPageReqDTO
     * @return
     */
    @Override
    public PageResponse<QueryUserWalletInfoPageRespDTO> queryUserWalletInfo(QueryUserWalletInfoPageReqDTO queryUserWalletInfoPageReqDTO) {
        PageResponse<UserWalletInfoExtendItemDTO> pageResponse = super.selectPage(queryUserWalletInfoPageReqDTO, userWalletInfoMapperExt::queryUserWalletInfoExtPageCount, userWalletInfoMapperExt::queryUserWalletInfoExtPage);

        List<UserWalletInfoExtendItemDTO> items = pageResponse.getItems();
        log.info(">>>> queryUserWalletInfo-items.list：{} <<<", (null != items ? JSON.toJSONString(items) : ""));
        List<QueryUserWalletInfoPageRespDTO> queryUserWalletInfoRespDTOS = ConvertUtils.convert(items, QueryUserWalletInfoPageRespDTO.class);

        PageResponse<QueryUserWalletInfoPageRespDTO> pageFinalResponse = new PageResponse();
        pageFinalResponse.setTotalCount(pageResponse.getTotalCount());
        pageFinalResponse.measureTotalPage(pageResponse.getTotalCount(), pageResponse.getPageSize());
        pageFinalResponse.setItems(queryUserWalletInfoRespDTOS);
        pageFinalResponse.setPageNumber(pageResponse.getPageNumber());
        pageFinalResponse.setPageSize(pageResponse.getPageSize());

        return pageFinalResponse;
    }

    /**
     * 修改userWalletInfo信息
     *
     * @param updateUserWalletInfoReqDTO
     * @return
     */
    @Override
    public UpdateUserWalletInfoRespDTO updateUserWalletInfo(UpdateUserWalletInfoReqDTO updateUserWalletInfoReqDTO) {
        int i = userWalletInfoMapperExt.updateByUserId(ConvertUtils.convert(updateUserWalletInfoReqDTO, UserWalletInfo.class));
        UpdateUserWalletInfoRespDTO updateUserWalletInfoRespDTO = new UpdateUserWalletInfoRespDTO();
        updateUserWalletInfoRespDTO.setUserId(updateUserWalletInfoReqDTO.getUserId());
        return updateUserWalletInfoRespDTO;
    }

}
